MWF.xApplication.process.FormDesigner.Module = MWF.xApplication.process.FormDesigner.Module || {};
MWF.xDesktop.requireApp("process.FormDesigner", "Module.$Element", null, false);
MWF.xApplication.process.FormDesigner.Module.SmartBI = MWF.FCSmartBI = new Class({
	Extends: MWF.FC$Element,
	Implements: [Options, Events],
	options: {
		"style": "default",
		"propertyPath": "../x_component_process_FormDesigner/Module/SmartBI/smartbi.html"
	},

	initialize: function (form, options) {
		this.setOptions(options);

		this.path = "../x_component_process_FormDesigner/Module/SmartBI/";
		this.cssPath = "../x_component_process_FormDesigner/Module/SmartBI/" + this.options.style + "/css.wcss";

		this._loadCss();
		this.moduleType = "container";
		this.moduleName = "SmartBI";

		this.Node = null;
		this.form = form;
	},

	_createMoveNode: function () {
		this.moveNode = new Element("div", {
			"MWFType": "SmartBI",
			"id": this.json.id,
			"styles": this.css.moduleNodeMove,
			"events": {
				"selectstart": function () {
					return false;
				}
			}
		}).inject(this.form.container);
	},
	_setEditStyle: function (name) {
		this.BIOptions = {
			"showtoolbar": this.json.smartbidisplaytoolbar || false, //showtoolbar对应SmartBI系统中的参数名
			"showLeftTree": this.json.smartbidisplaylefttree || false //即席查询是否显示左侧树形
		}

		if (name == "smartbiresource") {
			var value = this.json.smartbiresource || "none";
			if (value == "" || value == "none") {
				this.setNodeContainer()
			} else {
				this.createIframeNode(value, this.BIOptions)
			}
		}
		if (name == "smartbidisplaytoolbar") {
			if (this.json.smartbiresource && this.json.smartbiresource !== "none") {
				this.createIframeNode(this.json.smartbiresource, this.BIOptions)
			}
		}
		if (name == "smartbidisplaylefttree") {
			if (this.json.smartbiresource && this.json.smartbiresource !== "none") {
				this.createIframeNode(this.json.smartbiresource, this.BIOptions)
			}
		}
	},
	_loadNodeStyles: function () {
		var _iframe = this.node.getElements("iframe");
		if (_iframe.length > 0) {
			_iframe[0].setStyles(this.css.iframe)
		}
	},
	createIframeNode: function (id, options) {
		var value = id;
		var SmartBIAction = o2.Actions.load("x_custom_smartbi_assemble_control");

		var addressUri = SmartBIAction.ResourceAction.address;
		if(addressUri){
			SmartBIAction.ResourceAction.address(value,function(json){ 
				if(json.data.value !==""){
					var url = json.data.value;
					if (options) {
						var paraString = "";
						for (var key in options) {
							paraString = paraString + "&" + key + "=" + options[key]
						}
						url = url + paraString
					}
	
					url = o2.filterUrl(url);
					this.node.empty();
			
					new Element("iframe", {
						src: url,
						styles: this.css.iframe,
						frameborder: "0",
						scrolling: "auto"
					}).inject(this.node);
				}
			}.bind(this))
		}else{
			var address = SmartBIAction.ResourceAction.action.getAddress();
			var uri = SmartBIAction.ResourceAction.action.actions.open.uri;
			var url = uri.replace("{id}", encodeURIComponent(value));

			if(options){ 
				var paraString = "";
				for(var key in options){
					paraString = paraString + "&" + key + "=" + options[key]
				}
				url = url + "?"+paraString
			}
			
			url = o2.filterUrl(address+url);
			this.node.empty(); 
			
			new Element("iframe",{src:url,styles:this.css.iframe,frameborder:"0",scrolling:"auto"}).inject(this.node);

		}
		


		

		
	},
	_createNode: function () {
		this.node = this.moveNode.clone(true, true);
		this.node.setStyles(this.css.moduleNode);
		this.node.set("id", this.json.id);
		this.node.addEvent("selectstart", function () {
			return false;
		});
	},
	_resetModuleDomNode: function () {
		this.setNodeContainer();
	},
	setNodeContainer: function () {

		this.node.empty();
		this.nodeContainer = new Element("div", {
			styles: this.css.nodeContainer
		}).inject(this.node);
		this.nodeIcon = new Element("div", {
			"styles": this.css.nodeIcon
		}).inject(this.nodeContainer);

		if (!layout.serviceAddressList["x_custom_smartbi_assemble_control"]) {
			new Element("div", {
				styles: this.css.nodeTxt,
				text: MWF.APPFD.LP.smartbi.nosetup
			}).inject(this.nodeContainer);
		} else {
			var t = new Element("div", {
				styles: this.css.nodeTxt,
				text: MWF.APPFD.LP.smartbi.txt
			}).inject(this.nodeContainer);
			t.setStyles({
				"color": "#409EFF"
			});

		}
	}
});